I searched solidity documentation and there's nothing on this:
What does the caret ^ operator do?
What is it doing here?
sha3(sha3(valueA) ^ sha3(valueB))
I searched solidity documentation and there's nothing on this:
What does the caret ^ operator do?
What is it doing here?
sha3(sha3(valueA) ^ sha3(valueB))
It's a bitwise operation, XOR (exclusive or): https://docs.soliditylang.org/en/v0.8.6/types.html
"A bitwise XOR is a binary operation that takes two bit patterns of equal length and performs the logical exclusive OR operation on each pair of corresponding bits. The result in each position is 1 if only one of the bits is 1, but will be 0 if both are 0 or both are 1." https://en.wikipedia.org/wiki/Bitwise_operation#:~:text=A%20bitwise%20XOR%20is%20a,0%20or%20both%20are%201.
Per https://www.tutorialspoint.com/solidity/solidity_operators.htm (via Google, BTW), as in many languages, it means XOR (exclusive or):
x y x^y
0 0 0
0 1 1
1 0 1
1 1 0
(1=True; 0=False)
The keyword I left out is "bitwise" (as Nathan mentioned).
So, if, for example, sha3(valueA)=0x44=0b01000100, and
sha3(valueB)=0x34=0b00110100, then:
(sha3(valueA)=0x44=0b01000100 and sha3(valueB))=0x70=0b01110000
PS fun fact: XOR with all 1s is a "bit flip"