Copy() and reverse()

Can someone please explain the logic behind the below code from the OOP practice problems - Supermarket Queue
The code below is from the answer and implements the string method. However the concepts of copy() had not been covered in the lessons material.

def str(self):
tmp = self.elements[self.front_index:].copy()
tmp.reverse()
return str(tmp)

The .copy() create a copy of the data, because otherwise data will be modify (the input data, because python don’t copy the data without the .copy() statement, it attributes the same link on the memory)
tmp.reverse() reverse the elements positions and is the same of tmp[::-1]

Thank you for clarifying