Confusion with method call without `.` operator

I am confused on the second call :-

class Foo
def <<(param)
“hi”
end
end
foo = Foo.new
foo.<<(1) # => “hi”

foo << 1 # => “hi” # I didn’t use . method,then how method << has
been called?

Love U Ruby wrote in post #1120864:

I am confused on the second call :-

class Foo
def <<(param)
“hi”
end
end
foo = Foo.new
foo.<<(1) # => “hi”

foo << 1 # => “hi” # I didn’t use . method,then how method << has
been called?

I would image that it works the same as it does for the +, -, *, and /
methods.

Example:
$ irb
irb(main):001:0> 5 + 7
=> 12
irb(main):002:0> 5.+(7)
=> 12