Hi, Otto.
"&" returns a "1" in the resultant bit if and only if both bits fed to it are "1".
"^" returns a "1" in the resultant bit if and only if the bits fed to it are unequal (i.e., the input is "0" and "1", or the input is "1" and "0").
"|" returns a "1" in the resultant bit if either of the bits fed to it are "1".
Now, for the bit representations of your four ints:
8 = 00000000 00000000 00000000 00001000
9 = 00000000 00000000 00000000 00001001
10 = 00000000 00000000 00000000 00001010
11 = 00000000 00000000 00000000 00001011
Since you seem to understand the order of operations, Otto, we can see that, by the definitions above:
9 & 10 = 000000000 00000000 00000000 00001000 = 8
8 ^ 11 = 000000000 00000000 00000000 00000011 = 3
8 | 3 = 000000000 00000000 00000000 00001011 = 11
Therefore, 8 | 9 & 10 ^ 11 = 11.
HTH
Art