> But giving an example using functions instead of values is a little off topic since functions aren't mentioned in the Operator Precedence rules.
If you wrote
f + g * h;
it wouldn't change anything, because evaluating a variable still involves say moving from a memory location to a register.
> I guess that's why they just threw their hands up and said "ah screw it, lets just make it undefined".
Pretty much.
It's all to easy to argue that it might be possible to make something simple like ++x / x++ defined, but remember the spec assumes arbitrary complex expressions. If you had like 10 side effects on 6 different variables, you'd be in a much tougher spot.
Then compiler writers would have a hell of a job writing and testing the code, and programmers would have a hard time understanding all the rules.
As it stands, it's a very simple rule which is very unambiguous.