The right shift ">>" operator
x >> y', shifts
xright by
y` bits
shifting 15 (in binary: 1111) right by 4 makes it 0, since all the 1s just "fall off"
shifting a negative number it stays negative
GIVEN both operands are numbers
WHEN shifting right by 1 THEN this is like a division by 2
WHEN shifting right an odd number by 1 bit THEN this is like a division by 2 without rounding
GIVEN the operands are NOT only numbers
THEN the operands are converted to numbers
WHEN an operand is an array THEN this is also converted to a number
WHEN the right operand can NOT be converted to a number THEN it becomes 0
Links
The original ECMAScript 1 specification, "The right shift operator ( << )" is on page 44, chapter 11.7.2 (in a 110 pages PDF).
The MDN page.
Mastodon toot about starting to dive into the rabbit hole about writing this kata.