orthogonal complement
Given a subspace, its orthogonal complement is everything perpendicular to it — the directions in which you can move without disturbing any vector of the subspace. In R^3 the orthogonal complement of a plane through the origin is the line normal to it. This decomposition into a subspace and its perpendicular directions is the cleanest way to split a Hilbert space into independent pieces.
For a subset (typically a subspace) M of a Hilbert space H, the orthogonal complement is M-perp = { x in H : <x, m> = 0 for all m in M }. Whatever M is, M-perp is always a closed linear subspace, because orthogonality to a fixed vector is a continuous linear condition. When M itself is a closed subspace, H splits as the direct sum H = M (+) M-perp: every vector decomposes uniquely as a part in M plus a part in M-perp.
One subtlety to respect: the double complement M-perp-perp equals the closure of M, not M itself, so taking the complement twice recovers M only when M is already closed. For a non-closed subspace you regain only its closure. This is the closed-subspace caveat that makes “closed” the recurring hypothesis throughout Hilbert space geometry.
In L^2[-pi, pi] let M be the closed subspace of even functions (f(-x) = f(x)). Its orthogonal complement M-perp is the odd functions, since the integral of (even)(odd) over a symmetric interval is 0. Any f splits uniquely as f_even(x) = (f(x) + f(-x))/2 plus f_odd(x) = (f(x) - f(-x))/2, the orthogonal decomposition.
Even and odd functions as orthogonal complements inside L^2 of a symmetric interval.
The fact that M-perp is automatically closed even when M is not is genuinely useful: it gives a quick route to the closure of any subspace, since closure(M) = M-perp-perp. Orthogonal complements behave like a tidy logical negation on the lattice of closed subspaces.