Because it is aloaded first in the example that you have, and then the bit in parentheses is calculated. If you change the order:
int a = 20;
a = (a = 5) + a;
System.out.println(a);
10
... you really get 10. Expressions are evaluated left to right.
Consider this:
f() + g()
fwill be called before g. Imagine how unintuitive he would be in
f() + (g())
to gbe called before f.
JLS §15.7.1 ( @paisanco , ).