Explaining caret and right shift operators