"[On precedence of bit operations: ] I know it's on a lot of the mock exams you can find, but it's NOT on the real exam..." I was glad that the SCJP did not
test this. If the SCJP tested this, the test would become much more of test of trivia than test of practical experience.
As a practical matter, practicing programmers normally know the precedence table in its broad scope. For example, we know that . (the dot operator) binds tighter than the logical operators, which bind tighter than arithmetic operators, which in turn bind tighter than the assignment operators.
I had a program manager who used to say "multiplication and division before addition and subtraction, and everything else goes in parenthesis."
I think he was being partly facetious. Professional programmers would find annoying reading code that put in parens operators that are commonly used and several tiers of precedence apart. The less commonly used operators (e.g. bit twiddlers) should have parens to increase readability and maintainability.
(BTW, I don't parenthesize expressions with && and ||. The operations are so common in boolean expressions [e.g if( a || b && c)] that I believe programmers should just know that && has a higher precedence than ||. I also think they should be fair game on the SCJP.)