Are regular expressions a*a and aa* equivalent?
Yes, they're equivalent. Informally, it's clear that "any number of&nbsp;$a$s followed by one more" is the same thing as "a&nbsp;$a$ followed by any number more." However, there was a request in the comments for something more formal so here goes...

If $R$ and&nbsp;$S$ are regular expressions, then the concatenation $RS$ matches any string $w=w_1\dots w_\ell$ (where the $w_i$ are the individual characters) such that, for some&nbsp;$d$, $w_1\dots w_d$ matches&nbsp;$R$ and $w_{d+1}\dots w_\ell$ matches&nbsp;$S$. Here, $d=0$ and $d=\ell$ mean that we've split&nbsp;$w$ into $\varepsilon$ and&nbsp;$w$ and vice-versa.

So, consider $R=a^*$ and $S=a$. Then $RS$&nbsp;matches any string $w=w_1\dots w_\ell$ such that, for some&nbsp;$d$, $w_1\dots w_d$ matches&nbsp;$a^*$ and $w_{d+1}\dots w_\ell$ matches&nbsp;$a$. We must have $d=\ell-1$ and $w_\ell=a$ because only the string&nbsp;$a$ matches&nbsp;$a$, and it has length&nbsp;$1$.  And we must have $w_1=\dots=w_{\ell-1}=a$ because that is the only length-$(\ell-1)$ string that matches&nbsp;$a^*$. So $w=a^{\ell}$ for some $\ell\geq 1$.

Considering $R=a$ and $S=a^*$, an almost identical argument shows that any string that matches $aa^*$ must also be $a^{\ell}$ for some $\ell\geq 1$, so the two regular expressions do indeed match the same language.

At an intermediate level of formality, you can argue that $a^*$&nbsp;matches any string $a^\ell$ for $\ell\geq 0$, and $a$ matches the single string&nbsp;$a=a^1$.  So $a^*a$ matches any string $a^\ell a$ for $\ell\geq 0$, i.e., any string $a^{\ell+1}$ for $\ell\geq 0$, i.e., any string $a^\ell$ for $\ell&gt;0$.  Similarly, $aa^*$ matches any string $aa^\ell=a^{1+\ell}$ for $\ell\geq 0$, i.e., $a^\ell$ for $\ell&gt;0$.