Perl somehow knows what the execution order should be!
Eh, no. That's
perl that knows, for a particular version of perl. The fact that it isn't defined in the language may mean that a next version may do it differently.
they are implied by the rules of precedence and associativity in perlop.
Eh, no. The rules of precedence and associativity only deal with
parsing the language. They do not imply order of evaluation. The rules of precedence say that value of the expression:
E1 + E2 * E3
is calculated by multiplying the result of E2 and E3, and adding that to E1. It doesn't say E2 needs to be evaluated before E1 or E3. And indeed, current perl doesn't. In fact, it will evaluate E1, E2 and E3 in the same order as:
E1 * E2 + E3
even if the precedence of + and * are different.