If you don't care in what order they happen, why would you need to
express that you don't?
To tell the system to do whatever's fastest, not whatever exactly preserves
a trait I don't care about.
Imagine, if you will, that careful analysis of cache fills shows us that
evaluating a particular expression right-to-left instead of left-to-right
trims about 5-10% off its execution time.
In C, fine, the compiler can do that. It's allowed; there is no specified
order of evaluation. If I really want to force left-to-right, I can at the
very least hint quite strongly by breaking the expression into multiple
expressions.
In a language with carefully, rigidly, defined ordering, I *can't*.
And since it might be that whether left-to-right or right-to-left is faster
depends on other circumstances, I can't even just write the one that's
better. I just have to accept that the language will waste a ton of execution
time carefully preserving "semantics" which were in fact purely accidental,
and which I had no intention of specifying.
The option of not specifying a thing you don't care about is important for
some applications.
-s