Step Definitions is where the automation code is written. The steps in the gherkin file directly map to the step defintions. Each step in the gherkin maps to a step definition that in turn contains a block of code that gets executed when the scenario is ran.
An annotation followed by the pattern is used to link the Step Definition to all the matching Steps, and the code is what Cucumber will execute when it sees a Gherkin Step. Cucumber finds the Step Definition file with the help of Glue code in Cucumber Options.