Two axis-aligned rectangles fail to overlap only if one is completely to the left of, right of, above or below the other. It's easier to test for those four "separated" cases and negate the result:
separated = a.right <= b.left || b.right <= a.left
|| a.top <= b.bottom || b.top <= a.bottom
overlap = !separated
This negate the easy case trick is a powerful logic tool. When the condition you want is messy, describe its opposite instead.
Whether touching edges count as overlap depends on < versus <=, so read the statement carefully.