Hi Grady,
If you look at operator precedence order of || and &&, && has the higher precedence than operator ||.
And also if you remember
java always evaluates left oprand first for binary operators.
So the expression will get evaluated as -
boolean x = (a = true) || (b = true) && (c = true);//Original expression.
x = ((a = true) || ((b = true) && (c = true)));//According to the precedence.
x = (true || ((b = true) && (c = true)));//Left oprand evaluated first.
At this point sencond expression i.e ((b = true) && (c = true)) will never get evaluated as has got short circuited.
Hence the result is,
x = true; with a = true , b = false & c = false.
I hope this answers your question and not adding any confusion
Correct me if my understanding is wrong!
Regards,
Kapil