What does a single vertical bar mean in JavaScript?
javascript
Solution
It's binary "OR", just like in C or C++ or Java. In this case, it's used in its assignment operator form, so
value |= this.value
means that `this.value` and `value` are both converted to 32-bit integers, and a bitwise OR operation is performed. If `value` were 10 and `this.value` were 3 before the operation (that is, `01010` and `011` in binary) the result would be 11 (`01011` in binary).
The binary logic operators in Javascript are notable in Javascript because the work is carried out on integer values.
The term "bit-wise" is perhaps more accurate than "binary". The operations act on each bit of a numeric value, specifically the numeric values coerced to signed 32-bit integers. The result is also a signed 32-bit integer (according to the spec).
However, JavaScript numbers "at rest" are always 64-bit binary floating point values. Thus the results of bitwise operators, though computed with 32-bit integer math, are stored in floating point form. That works because the range of 32-bit integers fits comfortably and precisely in a 64-bit float.
Problem
What does this expression mean in JS? ``` Value |= this.value ```