In many environments (e.g. Heroku), and as a convention, you can set the environment variable PORT to tell your web server what port to listen on.
So process.env.PORT || 3000 means: whatever is in the environment variable PORT, or 3000 if there’s nothing there.
So you pass that to app.listen, or to app.set(‘port’, …), and that makes your server able to accept a “what port to listen on” parameter from the environment.
If you pass 3000 hard-coded to app.listen(), you’re always listening on port 3000, which might be just for you, or not, depending on your requirements and the requirements of the environment in which you’re running your server.
if you run node index.js ,Node will use 3000
If you run PORT=4444 node index.js, Node will use process.env.PORT which equals to 4444 in this example. Run with sudo for ports below 1024.