JS build a library project

So I completed the build a library project and though I would share my results. I read what it wanted in the first couple of paragraphs and that started to build and implement some added things that I thought I would want in this if it where mine. So it will not follow the project exactly and you will see other added methods and getters. This was fun and probably one of the first times I felt I was being creative and not just following some guidelines which was cool. I am happy to take any feedback on something I could have done better/different. Thanks

class Media {
  constructor (Media, Title) {
    this._media = Media;
    this._title = Title;
    this._isCheckedOut = false;
  }
  toggleCheckOutStatus() {
    this._isCheckedOut = !this._isCheckedOut;
  }
  get isCheckedOut() {
    return this._isCheckedOut;
  }
  get media() {
    return this._media;
  }
  get title() {
    return this._title;
  }
  getAverageRating() {
    const reducer = (previousValue, currentValue) => previousValue + currentValue;
    return (this._ratings.reduce(reducer)) / this._ratings.length;
  }
  addRating(num) {
    if ((num >= 0) && (num <=10)){
    this._ratings.push(num);
  } else {
    console.log('Please enter a value between 1 and 10');
  }
  }
}

class Book extends Media {
  constructor (Media, Title, Author, Pages) {
    super(Media, Title);
    this._author = Author;
    this._isCheckedOut = false;
    this._pages = Pages;
    this._ratings = [];
  }
  get author() {
    return this._author;
  } 
  get pages() {
    return this._pages;
  }
  displayInfo() {
    console.log(`The ${this._media} name is ${this._title}.  This work of art was created by ${this._author} and has ${this._pages} pages. It has a current rating of ${this.getAverageRating()}. Available for rent: ${this._isCheckedOut}`);
  } 
}

class Movie extends Media {
  constructor(Media, Title, Director, runTime) {
    super(Media, Title);
    this._director = Director;
    this._isCheckedOut = false;
    this._runTime = runTime;
    this._ratings = [];
  }
  get director() {
    return this._director;
  }
  get runTime() {
    return this._runTime;
  }
   displayInfo() {
    console.log(`The ${this._media} name is ${this._title}.  This work of art was created by ${this._director} and has a runtime of ${this._runTime}. It has a current rating of ${this.getAverageRating()}. Available for rent: ${this._isCheckedOut}`);
  } 
}

class CD extends Media {
  constructor(Media, Title, Artist, numTracks) {
    super(Media, Title);
    this._artist = Artist;
    this._isCheckedOut = false;
    this._numTracks = numTracks;
    this._ratings = [];
  }
  get artist() {
    return this._artist;
  }
  get numTracks() {
    return this._numTracks;
  }
  displayInfo() {
    console.log(`The ${this._media} name is ${this._title}.  This work of art was created by ${this._artist} and has ${this._numTracks} tracks available for listening. It has a current rating of ${this.getAverageRating()}. Available for rent: ${this._isCheckedOut}`);
  } 
}