 ok c is 3
 
 
-# Instanceof.
-ok new String instanceof String
-ok new Number not instanceof String
+# Bitwise operators:
+ok (10 &   3) is 2
+ok (10 |   3) is 11
+ok (10 ^   3) is 9
+ok (10 <<  3) is 80
+ok (10 >>  3) is 1
+ok (10 >>> 3) is 1
+
+num = 10; ok (num <<=  3) is 80
+num = 10; ok (num >>=  3) is 1
+num = 10; ok (num >>>= 3) is 1
+num = 10; ok (num &=   3) is 2
+num = 10; ok (num ^=   3) is 9
+num = 10; ok (num |=   3) is 11
 
 
 #737: `in` should have higher precedence than logical operators.



# Multiple operators should space themselves.
ok + +1 is - -1


eq '', do do do -> -> -> do String
eq 1, do -> 1
eq @, do => @


ok []    instanceof [String, Array]
ok 0 not instanceof [String, Array]


x = 'xx'

ok 1 > i++ < 1, 'chained operations should evaluate each value only once'


a = 1
b = '1'

ok a == b
ok not a != b
ok not (a === b)
ok not (a is  b)
ok a !==  b
ok a isnt b


ok 'a' in obj = a: true
ok 'b' not in obj, 'allow `x not in y`'


ok new String instanceof String
ok new Number not instanceof String, 'allow `x not instanceof Y`'

ok []    instanceof [String, Array]
ok 0 not instanceof [String, Array]


ok 200 of [100, 200, 300]
ok 200 of array = [100, 200, 300]
ok 1 not of array
ok array[0]++ of [99, 100], 'should cache testee'


# Non-spaced values still work.
x = 10
y = -5
eq x*-y, 50
eq x*+y, -50


# Conditional assignments.
one = 1
two = 0
one || = 2
two || = 2

eq one, 1
eq two, 2

zero = 0
zero &&= 'one'
one  &&= 'one'

eq zero, 0
eq one , 'one'

# Conditional assignments should be careful about caching variables.
count = 0
list = []

