This expression
boolean b = a || c && d;
is equivalent to this:
boolean b = a || (c && d);
Much like this expression
int a = c + d*e;
is equivalent to this
int a = c + (d*e);
Hope that helps.
Exactly and in the above case you evaluate * first because it has precedence, so following the same logic b&&c should be evaluated first in my opinion.
As to the example Andres referred to in KNB's book pg 216, that is a different example, because | has precedence over && or ||.
precedence order is &, ^, |, &&, ||