user16096: I was trying to follow this tutorial and came across >>. What exactly does this do? 

user4143: >> is right shift a value by a certain number of bits.
<< is left shift a value by a certain number of bits.
-> is accessing a member of a class or struct that is referenced by a pointer.
Right Shift and Left Shift
If you have a binary number 0b00010000 and right shift it two bits you get 0b00000100. The C notation for that is val >> 2.  The same for left shift - val << 2 would result in 0b01000000.
Pointers and members
Normally when you access a member of a class or struct you use ., such as Serial.println().  However it is possible to make a pointer to a class instance, and when you do you need to access the members with -> instead of . - such as mySerial->println().
This arrow notation serves as syntactic sugar: mySerial->println() is interpreted as (*mySerial).println(). The parentheses are necessary because the dereferencing operator * has a lower order of precedence compared to the dot . operator.

16096: <p>I was trying to follow <a href="https://www.arduino.cc/en/Tutorial/SPIEEPROM" rel="nofollow">this</a> tutorial and came across <code>&gt;&gt;</code>. What exactly does this do? </p>
 4143: <p><code>&gt;&gt;</code> is right shift a value by a certain number of bits.
<code>&lt;&lt;</code> is left shift a value by a certain number of bits.
<code>-&gt;</code> is accessing a member of a class or struct that is referenced by a pointer.</p>
<h1>Right Shift and Left Shift</h1>
<p>If you have a binary number <code>0b00010000</code> and right shift it two bits you get <code>0b00000100</code>. The C notation for that is <code>val &gt;&gt; 2</code>.  The same for left shift - <code>val &lt;&lt; 2</code> would result in <code>0b01000000</code>.</p>
<h1>Pointers and members</h1>
<p>Normally when you access a member of a class or struct you use <code>.</code>, such as <code>Serial.println()</code>.  However it is possible to make a <em>pointer</em> to a class instance, and when you do you need to access the members with <code>-&gt;</code> instead of <code>.</code> - such as <code>mySerial-&gt;println()</code>.
This arrow notation serves as syntactic sugar: <code>mySerial-&gt;println()</code> is interpreted as <code>(*mySerial).println()</code>. The parentheses are necessary because the dereferencing operator <code>*</code> has a lower order of precedence compared to the dot <code>.</code> operator.</p>
