This section works with the number binary, you should understand how each works:
1) The symbol "|" means "inclusive OR" and what it does is the following:
Make the bit value equal to 1 if one or both of the corresponding bits in the operands is 1 and 0 in all other cases. Example: if the var variable has the value 12 (00001100) and doing the operation with 6 (00000110), the result, var | 6, it will be 14 (00001110).
2) The symbol "< <" means "left shift" and what it does is the following:
Shift left bits of the left operand to the value given by the right operand. Equivalent to the multiplication by the power of 2 given by the latter. Example: If the var variable has the value 3 (00000011), after var < 2, it will be 12 (00001100).
So what your code is doing is more or less this:
teste = ((x0|x2) | (x1|x2) << 1);
teste = ((00000000|00000001) | (00000000|00000001) << 00000001);
teste = (00000001 | 00000001 << 00000001);
//O operador << tem precedência, então neste momento ele é executado primeiro
teste = (00000001 | 00000001 << 00000001);
teste = (00000001 | 00000010);
teste = (00000011);
teste = (3);
If you still have doubts about any other type of operator, this page link explains well the operation of each one.