HTML and CSS Reference
InDepth Information
EXPLANATION
(
CONTINUED
)
2
When the bitwise

(OR) operator is applied to
1111  1001
, the result is binary
1111 or decimal 15.
3
When the bitwise
^
(Exclusive OR) is applied to
1111 ^ 1001
, the result is binary
0110 or decimal 6.
4
9<<2
yields 36, because 1001 shifted two bits to the left becomes 100100, which
is decimal 36.
5
9>>2
yields 2, because 1001 shifted two bits to the right becomes 10, which is dec
imal 2.
6
9 >> 2
yields
3
, because the sign is preserved.
7
15 >>> 2
yields 3, because 1111 shifted two bits to the right becomes 0011, which
is decimal 3. For nonnegative numbers, zerofill right shift and signpropagating
right shift yield the same result. (See Figure 5.19.)
Figure 5.19
Output from Example 5.13.
Data Type Conversion
As defined earlier, JavaScript is a loosely typed language, which really means that you don't
have to be concerned about what kind of data is stored in a variable. You can assign a num
ber to
x
on one line and on the next line assign a string to
x
, you can compare numbers
and strings, strings and Booleans, and so on. JavaScript automatically converts values
when it assigns values to a variable or evaluates an expression. If data types are mixed (i.e.,
a number is compared with a string, a Boolean is compared with a number, a string is com
pared with a Boolean), JavaScript must decide how to handle the expression. Most of the
time, letting JavaScript handle the data works fine, but there are times when you want to
force a conversion of one type to another. For example, if you prompt a user for input, the
input is set as a string. But, suppose you want to perform calculations on the incoming
data, making it necessary to convert the strings to numbers. When using the
+
operator
you want to add two numbers that have been entered as strings, not concatenate them, so
you will then need to convert the data from string to number.