It's a bitwise OR operator. But what it's doing there is using side-effects to make a number which may have a fractional portion a whole number instead.
All numbers in JavaScript are floating-point, so (init_num + last_num) / 2
may have a fractional portion. When you apply a bitwise operator to a number, it's temporarily coerced to a 32-bit integer, losing any fractional portion. Since the OR operator's result has a bit set for any bit set on either operand, and since the second operand in your example is 0 (all bits off), the result is the same bit pattern as the left-hand operand (which is then turned back into a floating-point number).