Batch apex is used to process the large no of data in Asynchronous mode.( Runs when the resources are free )
With the help of batch apex we can process upto 50 million records.
We prefer to use the batch apex when we have large set of data and we wanted to perform/execute certain logic on the scheduled basis.