Can someone explain the ERC20 constructor syntax?

I tried to follow this tutorial and saw that his ERC20 constructor looks totally different.

pragma solidity >=0.7.0 <0.9.0;

import "";

contract myToken is ERC20PresetMinterPauser {
    constructor() ERC20PresetMinterPauser("myToken", "MYT") {

The OpenZeppelin 4.x ERC20’s constructor looks like this:

contract GLDToken is ERC20 {
    constructor(uint256 initialSupply) ERC20("Gold", "GLD") {
        _mint(msg.sender, initialSupply);

It seems that this line constructor(uint256 initialSupply) ERC20("Gold", "GLD") { is not entirely necessary. Is that a return type? Is that a ERC20 object being constructed with its own “Gold”, “GLD” parameters? Where is that constructor?

See the documentation for Solidity constructors.