Simple explanation:
Variable does not contain an object.
Variable contains a reference to an object.
for numbers:
Number1 = 42
-- Variable refers to an object (a number 42)
Number2 = Number1
-- Both variables refer to the same object (a number 42)
Number2 = Number2 + 1
-- You created new object (a number 43) and made variable Number2 refer to this new object.
for tables:
Table1 = {"x"}
-- Variable refers to an object (an array containing string "x")
Table2 = Table1
-- Both variables refer to the same object (an array containing string "x")
Table2[1] = "y"
-- You modified existing object. You didn't create new one.