<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def left_of(self, other):
 """ Test if this range `other` is strictly left of `other`. True False The bitwise right shift operator ``<<`` is overloaded for this operation too. True The choice of overloading ``<<`` might seem strange, but it is to mimick PostgreSQL's operators for ranges. As this is not obvious the use of ``<<`` is discouraged. :param other: Range to test against. :return: ``True`` if this range is completely to the left of ``other``. """


        if not self.is_valid_range(other):
            msg = (
                "Left of is not supported for '{}', provide a proper range "
                "class").format(other.__class__.__name__)
            raise TypeError(msg)

        return self < other and not self.overlap(other)