By definition of the colon operator, s:sub(x,x+y) is s.sub(s,x,x+y), which by definition of the dot operator is s["sub"](s, x,x+y). But if s is a string we have to look up the value of s["sub"] in the __index field of s's metatable. This is the same as the metatable of the table called...