This question already has an answer here:
It is always true. One of the important theorems one learns in linear algebra is that
$$ \mathrm{Nul}(A^T)^{\perp} = \mathrm{Col}(A), \quad \mathrm{Nul}(A)^{\perp} = \mathrm{Col}(A^T).$$
Therefore $\mathrm{Nul}(A^T) \cap \mathrm{Col}(A) = \{0\}$, and so forth. Now consider the matrix $A^TA$. Then $\mathrm{Col}(A^TA) = \{A^TAx\} = \{A^Ty: y \in \mathrm{Col}(A)\}$. But since the null space of $A^T$ only intersects trivially with $\mathrm{Col}(A)$, then $\mathrm{Col}(A^TA)$ must have the same dimension as $\mathrm{Col}(A)$, which gives us the equality of ranks.
We can replace $A$ with $A^T$ to prove the other equality.
This is only true for real matrices. For instance
$\begin{bmatrix} 1 & i \\ 0 &0 \end{bmatrix}\begin{bmatrix} 1 & 0 \\ i &0 \end{bmatrix}$ has rank zero. For complex matrices, you’ll need to take the conjugate transpose.
Here is a common proof.
All matrices in this note are real. Think of a vector $X$ as an $m\!\times\!1$ matrix. Let $A$ be an $m\!\times\!n$ matrix.
We will prove that $A A^T X = 0$ if and only if $A^T X = 0$.
It is clear that $A^T X = 0$ implies $AA^T X = 0$.
Assume that $AA^T X = 0$ and set $Y = A^T\!X$. Then $X^T\!A\, Y = 0$, and thus $(A^T\!X)^T Y = 0$. That is $Y^T Y = 0$. This implies $Y = A^T X = 0$.
We just proved that the $m\!\times\!m$ matrix $AA^T$ and the $n\!\times\!m$ matrix $A^T$ have the same null space. Consequently they have the same nullity. The nullity-rank theorem states that
$$
\operatorname{Nul} AA^T + \operatorname{Rank} AA^T = m = \operatorname{Nul} A^T + \operatorname{Rank} A^T.
$$
Hence $\operatorname{Rank} AA^T = \operatorname{Rank} A^T$.
The meaning of the equality is: the rank of a matrix is equal to the number of nonzero singular values of a matrix.