Look, Vitalik is not a native english speaker so sometimes when you are operating in a second language, these misspeaks happen. I am gonna give him the benefit of the doubt here.
Boolean operators work identically in Russian, French and English. All other languages too.
Well, maybe his logic was basically correct.
If <this == 1> && <that == 1>then <state == 1>, if <this == 1> && <that == 0>then <state == 0>, if <this == 0> && <that == 1>then <state == 0>,if <this == 0> && <that == 0>then <state == 0> So, the bool "and" operator requires all "true" inputs to produce a "true" state on the output.
However, if <this == 1> || <that == 1>then <state == 1>, if <this == 1> || <that == 0>then <state == 1>, if <this == 0> || <that == 1>then <state == 1>, if <this == 0> || <that == 0>then <state == 0> So, the bool "or" operator only requires, at least, 1 of the inputs to be "true" to produce a "true" state on the output.
If a person had a choice between this "or" that but not this "and" that, then how would that translate into a pseudocode of Vitalik's argument?
Contrast that with: if <this == 1> ^^ <that == 1>then <state == 0>,if <this ==1> ^^ <that == 0>then <state == 1>, if <this == 0> ^^ <that==1>then <state == 1>, if <this == 0> ^^ <that == 0>then <state == 0> The "xor" operator requires one or the other input, but not both, to be "true" to produce a "true" state on the output.
So, in which truth table does Vitalic's argument fall?