'Combine two representation.
By default, operate on the cartesian representations of both.
Parameters
op : `~operator` callable
Operator to apply (e.g., `~operator.add`, `~operator.sub`, etc.
other : `~astropy.coordinates.BaseRepresentation` instance
The other representation.
reverse : bool
Whether the operands should be reversed (e.g., as we got here via
``self.__rsub__`` because ``self`` is a subclass of ``other``).'

def _combine_operation(self, op, other, reverse=False):

    self._raise_if_has_differentials(op.__name__)
    result = self.to_cartesian()._combine_operation(op, other, reverse)
    if (result is NotImplemented):
        return NotImplemented
    else:
        return self.from_cartesian(result)
