-2^2 = -4 that's normal and must be so !
I hate to disagree but not necessarily so. Look at note one under "References and Notes" in that Wikipedia article you linked to. Also in the table of precedence for C type programs under "Mathematical precedence" the unary operators have the second highest precedence though you can't apply this example as C does not implement an exponentiation operator (it uses a function instead). My own opinion is that the "obvious" place for "^" is above the " * / % " operators and below unary " + - ".
In a Recursive Descent Parser, like the one I wrote for my BasicLib library, the "natural" place to put the unary operators is at the highest precedence so thay are treated like Sin(..) and Rnd(..) etc. In this case the unary " - " is like a Neg(...) function.
-2^2 = (-2)^2 = Neg(2)^2 = 4
Regardless of that, for many many years have I have not relied on precedence but always use parentheses in any but the simplest expression to make the order of evaluation explicit and most importantly, obvious.